home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / Translation.idl < prev    next >
Text File  |  1996-05-01  |  9KB  |  227 lines

  1. /*
  2.      File:        Translation.idl
  3.  
  4.      Contains:    Translation Manager (Macintosh Easy Open) Interfaces.
  5.  
  6.      Version:    Technology:    Macintosh Easy Open 1.1
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TRANSLATION_IDL__
  19. #define __TRANSLATION_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __FILES_IDL__
  28. #include <Files.idl>
  29. #endif
  30. #ifndef __COMPONENTS_IDL__
  31. #include <Components.idl>
  32. #endif
  33. #ifndef __TRANSLATIONEXTENSIONS_IDL__
  34. #include <TranslationExtensions.idl>
  35. #endif
  36.  
  37. #ifdef __SOMIDL__
  38.  
  39. /* enumerated types on how a document can be opened*/
  40. typedef short                    DocOpenMethod;
  41.  
  42. /* 0L terminated array of OSTypes, or FileTypes*/
  43. typedef OpaquePtr                TypesBlock;                    /* Substituted OpaquePtr for array of OSType of size 64 */
  44.  
  45. typedef OpaquePtr                TypesBlockPtr;                /* Substituted OpaquePtr for ``OSType*'' */
  46.  
  47. /* Progress dialog resource ID*/
  48. /* block of data that describes how to translate*/
  49. typedef SOMLargeStruct            FileTranslationSpec;        /* Derived from a struct of 48 bytes in size */
  50.  
  51. typedef OpaquePtr                FileTranslationSpecArrayPtr; /* Substituted OpaquePtr for ``FileTranslationSpec*'' */
  52.  
  53. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  54. /*
  55. ****************************************************************************************
  56. *   GetFileTypesThatAppCanNativelyOpen
  57. *  This routine returns a list of all FileTypes that an application can open by itself
  58. *  Enter:    appVRefNumHint        volume where application resides (can be wrong, and if is, will be used as a starting point)
  59. *             appSignature        signature (creator) of application
  60. *             nativeTypes            pointer to a buffer to be filled with up to 64 FileTypes
  61. *  Exit:    nativeTypes            zero terminated array of FileTypes that can be opened by app
  62. */
  63. /*
  64. ****************************************************************************************
  65. *  ExtendFileTypeList
  66. *  This routine makes a new list of file types that can be translated into a type in the given list
  67. *  Used by StandardFile
  68. *  Enter:    originalTypeList        pointer to list of file types that can be opened
  69. *             numberOriginalTypes        number of file types in orgTypeList
  70. *              extendedTypeList        pointer to a buffer to be filled with file types
  71. *             numberExtendedTypes        max number of file types that can be put in extendedTypeList
  72. *  Exit:    extendedTypeList        buffer filled in with file types that can be translated
  73. *             numberExtendedTypes        number of file types put in extendedTypeList
  74. */
  75. /*
  76. ****************************************************************************************
  77. *  This routine checks if a file can be opened by a particular application.
  78. *  If so, it returns if it needs to be translated first, and if so then how.
  79. *  The FileTypes that the app can open are specified by nativelyOpenableTypes,
  80. *  or if it is NULL, GetFileTypesThatAppCanNativelyOpen is called.
  81. *  Enter:    targetDocument        document to check if it can be opened
  82. *             appVRefNumHint        vRefNum of application to open doc ( can be wrong, and if is, will be used as a starting point)
  83. *             appSignature        signature (creator) of application to open doc
  84. *             nativeTypes            zero terminated list of FileTypes app can open natively, or NULL to use default list
  85. *             onlyNative            whether to consider if document can be translated before opening
  86. *             howToOpen            pointer to buffer in which to put how the document can be opened
  87. *             howToTranslate        pointer to buffer in which to put a FileTranslationSpec record
  88. *  Exit:    howToOpen            whether file needs to be translated to be read
  89. *             howToTranslate        if file can be translated, buffer filled in with how to translate
  90. *             returns                noErr, noPrefAppErr
  91. */
  92. /*
  93. ****************************************************************************************
  94. *  GetFileTranslationPaths
  95. *  This routine returns a list of all ways a translation can occure to or from a FileType.
  96. *  The app is checked to exist.  The hint for each app is the VRefNum and DTRefNum
  97. *  Enter:    srcDoc            source file or NULL for all matches
  98. *             dstDoc            destination FileType or NULL for all matches
  99. *             maxResultCount
  100. *             resultBuffer
  101. *  Exit:    number of paths
  102. */
  103. /*
  104. ****************************************************************************************
  105. *  GetPathFromTranslationDialog
  106. *  This routine, with a given document, application, and a passed typelist will display the
  107. *  Macintosh Easy Open translation dialog allowing the user to make a choice.  The choice
  108. *  made will be written as a preference (so the next call to CanDocBeOpened() will work).
  109. *  The routine returns the translation path information.
  110. *  Enter:    theDocument            FSSpec to document to open
  111. *             theApplication        FSSpec to application to open document
  112. *             typeList            Nil terminated list of FileType's (e.g. SFTypeList-like) of types
  113. *                                 you would like the documented translated to.  Order most perferred
  114. *                                 to least.
  115. *  Exit:    howToOpen            Translation method needed to open document
  116. *             howToTranslate        Translation specification
  117. *             returns                Any errors that might occur.
  118. */
  119. /*
  120. ****************************************************************************************
  121. *   TranslateFile
  122. *  This routine reads a file of one format and writes it to another file in another format. 
  123. *  The information on how to translated is generated by the routine CanDocBeOpened.
  124. *  TranslateFile calls through to the TranslateFile Extension's DoTranslateFile routine.  
  125. *  The destination file must not exist.  It is created by this routine.  
  126. *  Enter:    sourceDocument            input file to translate
  127. *             destinationDocument        output file of translation
  128. *             howToTranslate            pointer to info on how to translate
  129. *  Exit:    returns                    noErr, badTranslationSpecErr 
  130. */
  131. /*
  132. ****************************************************************************************
  133. *   GetDocumentKindString
  134. *  This routine returns the string the Finder should show for the "kind" of a document
  135. *  in the GetInfo window and in the kind column of a list view.  
  136. *  Enter:    docVRefNum        The volume containing the document
  137. *             docType            The catInfo.fdType of the document
  138. *             docCreator        The catInfo.fdCreator of the document
  139. *             kindString        pointer to where to return the string
  140. *  Exit:    kindString        pascal string.  Ex: "\pSurfCalc spreadsheet"
  141. *             returns            noErr, or afpItemNoFound if kind could not be determined
  142. */
  143. /*
  144. ****************************************************************************************
  145. *  GetTranslationExtensionName
  146. *  This routine returns the translation system name from a specified TranslationSpec
  147. *  Enter:    translationMethod    The translation path to get the translation name from
  148. *  Exit:    extensionName        The name of the translation system
  149. *             returns                Any errors that might occur
  150. */
  151. /*
  152. ****************************************************************************************
  153. *  GetScrapDataProcPtr
  154. *  This is a prototype for the function you must supply to TranslateScrap. It is called to 
  155. *  get the data to be translated.  The first call TranslateScrap will make to this is to
  156. *  ask for the 'fmts' data.  That is a special.   You should resize and fill in the handle
  157. *  with a list all the formats that you have available to be translated, and the length of each.
  158. *  (See I.M. VI 4-23 for details of 'fmts').  It will then be called again asking for one of  
  159. *  the formats that 'fmts' list said was available.
  160. *  Enter:    requestedFormat            Format of data that TranslateScrap needs.
  161. *             dataH                    Handle in which to put the requested data
  162. *             srcDataGetterRefCon        Extra parameter for you passed to TranslateScrap
  163. *             
  164. *  Exit:    dataH                    Handle is resized and filled with data in requested format
  165. */
  166. typedef OpaquePtr GetScrapDataProcPtr;
  167. typedef OpaquePtr GetScrapDataUPP;
  168. typedef GetScrapDataUPP            GetScrapData;
  169.  
  170. /*
  171. ****************************************************************************************
  172. *  TranslateScrap
  173. *  This routine resizes the destination handle and fills it with data of the requested format.
  174. *  The data is generated by translated one or more source formats of data supplied by
  175. *  the procedure srcDataGetter.  
  176. *  This routine is automatically called by GetScrap and ReadEdition.  You only need to call
  177. *  this if you need to translated scrap style data, but are not using the ScrapMgr or EditionMgr.
  178. *  Enter:    sourceDataGetter            Pointer to routine that can get src data
  179. *             sourceDataGetterRefCon        Extra parameter for dataGetter
  180. *             destinationFormat            Format of data desired
  181. *             destinationData                Handle in which to store translated data
  182. *             
  183. *  Exit:    dstData                        Handle is resized and filled with data in requested format
  184. */
  185. #endif
  186.  
  187. #endif /* __SOMIDL__ */
  188.  
  189. #endif /* __TRANSLATION_IDL__ */
  190.  
  191.